package com.huike.clues.mapper;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.huike.clues.domain.TbClue;
import com.huike.clues.domain.vo.IndexStatisticsVo;
import org.apache.ibatis.annotations.Param;

/**
 * 线索管理Mapper接口

 * @date 2021-04-02
 */
public interface TbClueMapper {
    /**
     * 查询线索管理
     * 
     * @param id 线索管理ID
     * @return 线索管理
     */
    TbClue selectTbClueById(Long id);


    List<TbClue>  selectClueByIds(Long[] ids);

    /**
     * 查询线索管理
     *
     * @param phone 手机号
     * @return 线索管理
     */
    TbClue selectTbClueByPhone(String phone);

    /**
     * 查询线索管理列表
     * 
     * @param tbClue 线索管理
     * @return 线索管理集合
     */
    List<TbClue> selectTbClueList(TbClue tbClue);

   // public int countAssignByUser(@Param("userId") Long userId);



    List<TbClue> selectTbCluePoll(TbClue tbClue);

    /**
     * 新增线索管理
     * 
     * @param tbClue 线索管理
     * @return 结果
     */
    int insertTbClue(TbClue tbClue);

    /**
     * 修改线索管理
     * 
     * @param tbClue 线索管理
     * @return 结果
     */
    int updateTbClue(TbClue tbClue);

    int resetNextTimeAndStatus(@Param("id") Long id, @Param("status") String status);


    int setTransfer(@Param("id") Long id, @Param("status") String status);

    /**
     * 删除线索管理
     * 
     * @param id 线索管理ID
     * @return 结果
     */
    int deleteTbClueById(Long id);

    /**
     * 批量删除线索管理
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteTbClueByIds(Long[] ids);

    List<Map<String,Object>> countAllContractByUser(@Param("indexVo") IndexStatisticsVo vo);


    /*修改id对应时间*/
	void updateClueEndTimeById(@Param("id") Long id, @Param("endTime") Date endTime);


	List<Map<String, Object>> countAllClueByUser(@Param("indexVo") IndexStatisticsVo vo);


    /**
     * 统计线索数量
     * @param request
     * @param now
     * @param username
     * @return
     */
    int getCluesNum(@Param("indexVo") IndexStatisticsVo request, @Param("now") String now, @Param("username") String username);


    /**
     * 统计时间段的线索数量
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    int countAllClues(@Param("beginCreateTime") String beginCreateTime, @Param("endCreateTime") String endCreateTime);

    /**
     * 统计时间段的有效线索数量
     * @param beginCreateTime
     * @param endCreateTime
     * @return
     */
    int effectiveCluesNums(@Param("beginCreateTime") String beginCreateTime, @Param("endCreateTime") String endCreateTime);

    /**
     * 删除伪线索
     * @param id
     * @return
     */
    int removeClueByFalseClue(@Param("id") Long id);

}
